ifdef _WIN64
ifndef _IMAGEHLP64
_IMAGEHLP64 equ <1>
endif
endif

;typedef BOOL
;(CALLBACK *PFIND_DEBUG_FILE_CALLBACK)(
;    __in HANDLE FileHandle,
;    __in PCSTR FileName,
;    __in PVOID CallerData
;    );

;*************************************************************************
; Method:           SymFindDebugInfoFile
; Description:    	
; ParameterList:  	hProcess, FileName, DebugFilePath, Callback, CallerData
; Parameter:        hProcess:__in HANDLE
; Parameter:        FileName:__in PCSTR
; Parameter:        DebugFilePath:__out_ecount(MAX_PATH + 1) PSTR
; Parameter:        Callback:__in_opt PFIND_DEBUG_FILE_CALLBACK
; Parameter:        CallerData:__in_opt PVOID
; Return Value:     HANDLE
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
SymFindDebugInfoFile proto stdcall \
    hProcess:dword, \
    FileName:dword, \
    DebugFilePath:dword, \
    Callback:dword, \
    CallerData:dword

;typedef BOOL
;(CALLBACK *PFIND_DEBUG_FILE_CALLBACKW)(
;    __in HANDLE FileHandle,
;    __in PCWSTR FileName,
;    __in PVOID  CallerData
;    );

;*************************************************************************
; Method:           SymFindDebugInfoFileW
; Description:    	
; ParameterList:  	hProcess, FileName, DebugFilePath, Callback, CallerData
; Parameter:        hProcess:__in HANDLE
; Parameter:        FileName:__in PCWSTR
; Parameter:        DebugFilePath:__out_ecount(MAX_PATH + 1) PWSTR
; Parameter:        Callback:__in_opt PFIND_DEBUG_FILE_CALLBACKW
; Parameter:        CallerData:__in_opt PVOID
; Return Value:     HANDLE
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
SymFindDebugInfoFileW proto stdcall \
    hProcess:dword, \
    FileName:dword, \
    DebugFilePath:dword, \
    Callback:dword, \
    CallerData:dword
    
;*************************************************************************
; Method:           FindDebugInfoFile
; Description:    	
; ParameterList:  	FileName, SymbolPath, DebugFilePath
; Parameter:        FileName:__in PCSTR
; Parameter:        SymbolPath:__in PCSTR
; Parameter:        DebugFilePath:__out_ecount(MAX_PATH + 1) PSTR
; Return Value:     HANDLE
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
FindDebugInfoFile proto stdcall FileName:dword, SymbolPath:dword, DebugFilePath:dword

;*************************************************************************
; Method:           FindDebugInfoFileEx
; Description:    	
; ParameterList:  	FileName, SymbolPath, DebugFilePath, Callback, CallerData
; Parameter:        FileName:__in PCSTR
; Parameter:        SymbolPath:__in PCSTR
; Parameter:        DebugFilePath:__out_ecount(MAX_PATH + 1) PSTR
; Parameter:        Callback:__in_opt PFIND_DEBUG_FILE_CALLBACK
; Parameter:        CallerData:__in_opt PVOID
; Return Value:     HANDLE
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
FindDebugInfoFileEx proto stdcall \
    hProcess:dword, \
    FileName:dword, \
    DebugFilePath:dword, \
    Callback:dword, \
    CallerData:dword

;*************************************************************************
; Method:           FindDebugInfoFileExW
; Description:    	
; ParameterList:  	FileName, SymbolPath, DebugFilePath, Callback, CallerData
; Parameter:        FileName:__in PCWSTR
; Parameter:        SymbolPath:__in PCWSTR
; Parameter:        DebugFilePath:__out_ecount(MAX_PATH + 1) PWSTR
; Parameter:        Callback:__in_opt PFIND_DEBUG_FILE_CALLBACKW
; Parameter:        CallerData:__in_opt PVOID
; Return Value:     HANDLE
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
FindDebugInfoFileExW proto stdcall \
    hProcess:dword, \
    FileName:dword, \
    DebugFilePath:dword, \
    Callback:dword, \
    CallerData:dword

;typedef BOOL
;(CALLBACK *PFINDFILEINPATHCALLBACK)(
;    __in PCSTR filename,
;    __in PVOID context
;    );

;*************************************************************************
; Method:           SymFindFileInPath
; Description:    	
; ParameterList:  	hProcess, SearchPath, FileName, id, two, three, flags, FoundFile, callback, context
; Parameter:        hProcess:__in HANDLE
; Parameter:        SearchPath:__in PCSTR
; Parameter:        FileName:__in PCSTR
; Parameter:        id:__in_opt PVOID
; Parameter:        two:__in DWORD
; Parameter:        three:__in DWORD
; Parameter:        flags:__in DWORD
; Parameter:        FoundFile:__out_ecount(MAX_PATH + 1) PSTR
; Parameter:        callback:__in_opt PFINDFILEINPATHCALLBACK
; Parameter:        context:__in_opt PVOID
; Return Value:     HANDLE
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
SymFindFileInPath proto stdcall \
    hProcess:dword, \
    SearchPath:dword, \
    FileName:dword, \
    id:dword, \
    two:dword, \
    three:dword, \
    flags:dword, \
    FoundFile:dword, \
    callback:dword, \
    context:dword

;typedef BOOL
;(CALLBACK *PFINDFILEINPATHCALLBACKW)(
;    __in PCWSTR filename,
;    __in PVOID context
;    );

;*************************************************************************
; Method:           SymFindFileInPathW
; Description:    	
; ParameterList:  	hProcess, SearchPath, FileName, id, two, three, flags, FoundFile, callback, context
; Parameter:        hProcess:__in HANDLE
; Parameter:        SearchPath:__in PCWSTR
; Parameter:        FileName:__in PCWSTR
; Parameter:        id:__in_opt PVOID
; Parameter:        two:__in DWORD
; Parameter:        three:__in DWORD
; Parameter:        flags:__in DWORD
; Parameter:        FoundFile:__out_ecount(MAX_PATH + 1) PWSTR
; Parameter:        callback:__in_opt PFINDFILEINPATHCALLBACKW
; Parameter:        context:__in_opt PVOID
; Return Value:     HANDLE
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
SymFindFileInPathW proto stdcall \
    hProcess:dword, \
    SearchPath:dword, \
    FileName:dword, \
    id:dword, \
    two:dword, \
    three:dword, \
    flags:dword, \
    FoundFile:dword, \
    callback:dword, \
    context:dword

;typedef BOOL
;(CALLBACK *PFIND_EXE_FILE_CALLBACK)(
;    __in HANDLE FileHandle,
;    __in PCSTR FileName,
;    __in_opt PVOID CallerData
;    );

;*************************************************************************
; Method:           SymFindExecutableImage
; Description:    	
; ParameterList:  	hProcess, FileName, ImageFilePath, Callback, CallerData
; Parameter:        hProcess:__in HANDLE
; Parameter:        FileName:__in PCSTR
; Parameter:        ImageFilePath:__out_ecount(MAX_PATH + 1) PSTR
; Parameter:        Callback:__in PFIND_EXE_FILE_CALLBACK
; Parameter:        CallerData:__in PVOID
; Return Value:     HANDLE
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
SymFindExecutableImage proto stdcall \
    hProcess:dword, \
    FileName:dword, \
    ImageFilePath:dword, \
    Callback:dword, \
    CallerData:dword

;typedef BOOL
;(CALLBACK *PFIND_EXE_FILE_CALLBACKW)(
;    __in HANDLE FileHandle,
;    __in PCWSTR FileName,
;    __in_opt PVOID CallerData
;    );

;*************************************************************************
; Method:           SymFindExecutableImageW
; Description:    	
; ParameterList:  	hProcess, FileName, ImageFilePath, Callback, CallerData
; Parameter:        hProcess:__in HANDLE
; Parameter:        FileName:__in PCWSTR
; Parameter:        ImageFilePath:__out_ecount(MAX_PATH + 1) PWSTR
; Parameter:        Callback:__in PFIND_EXE_FILE_CALLBACKW
; Parameter:        CallerData:__in PVOID
; Return Value:     HANDLE
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
SymFindExecutableImageW proto stdcall \
    hProcess:dword, \
    FileName:dword, \
    ImageFilePath:dword, \
    Callback:dword, \
    CallerData:dword

;*************************************************************************
; Method:           FindExecutableImage
; Description:    	
; ParameterList:  	FileName, SymbolPath, ImageFilePath
; Parameter:        FileName:__in PCSTR
; Parameter:        SymbolPath:__in PCSTR
; Parameter:        ImageFilePath:__out_ecount(MAX_PATH + 1) PSTR
; Return Value:     HANDLE
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
FindExecutableImage proto stdcall FileName:dword, SymbolPath:dword, ImageFilePath:dword

;*************************************************************************
; Method:           FindExecutableImageEx
; Description:    	
; ParameterList:  	FileName, SymbolPath, ImageFilePath, Callback, CallerData
; Parameter:        FileName:__in PCSTR
; Parameter:        SymbolPath:__in PCSTR
; Parameter:        ImageFilePath:__out_ecount(MAX_PATH + 1) PSTR
; Parameter:        Callback:__in_opt PFIND_EXE_FILE_CALLBACK
; Parameter:        CallerData:__in_opt PVOID
; Return Value:     HANDLE
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
FindExecutableImageEx proto stdcall \
    FileName:dword, \
    SymbolPath:dword, \
    ImageFilePath:dword, \
    Callback:dword, \
    CallerData:dword

;*************************************************************************
; Method:           FindExecutableImageExW
; Description:    	
; ParameterList:  	FileName, SymbolPath, ImageFilePath, Callback, CallerData
; Parameter:        FileName:__in PCWSTR
; Parameter:        SymbolPath:__in PCWSTR
; Parameter:        ImageFilePath:__out_ecount(MAX_PATH + 1) PWSTR
; Parameter:        Callback:__in_opt PFIND_EXE_FILE_CALLBACKW
; Parameter:        CallerData:__in_opt PVOID
; Return Value:     HANDLE
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
FindExecutableImageExW proto stdcall \
    FileName:dword, \
    SymbolPath:dword, \
    ImageFilePath:dword, \
    Callback:dword, \
    CallerData:dword

;*************************************************************************
; Method:           ImageNtHeader
; Description:    	
; ParameterList:  	Base
; Parameter:        Base:__in PVOID
; Return Value:     PIMAGE_NT_HEADERS
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
ImageNtHeader proto stdcall Base:dword

;*************************************************************************
; Method:           ImageDirectoryEntryToDataEx
; Description:    	
; ParameterList:  	Base, MappedAsImage, DirectoryEntry, Size1, FoundHeader
; Parameter:        Base:__in PVOID
; Parameter:        MappedAsImage:__in BOOLEAN
; Parameter:        DirectoryEntry:__in USHORT
; Parameter:        Size1:__out PULONG
; Parameter:        FoundHeader:__out_opt PIMAGE_SECTION_HEADER *
; Return Value:     PVOID
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
ImageDirectoryEntryToDataEx proto stdcall Base:dword, MappedAsImage:byte, DirectoryEntry:word, Size1:dword, FoundHeader:dword

;*************************************************************************
; Method:           ImageDirectoryEntryToData
; Description:    	
; ParameterList:  	Base, MappedAsImage, DirectoryEntry, Size1
; Parameter:        Base:__in PVOID
; Parameter:        MappedAsImage:__in BOOLEAN
; Parameter:        DirectoryEntry:__in USHORT
; Parameter:        Size1:__out PULONG
; Return Value:     PVOID
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
ImageDirectoryEntryToData proto stdcall Base:dword, MappedAsImage:byte, DirectoryEntry:word, Size1:dword

;*************************************************************************
; Method:           ImageRvaToSection
; Description:    	
; ParameterList:  	NtHeaders, Base, Rva
; Parameter:        NtHeaders:__in PIMAGE_NT_HEADERS
; Parameter:        Base:__in PVOID
; Parameter:        Rva:__in ULONG
; Return Value:     PIMAGE_SECTION_HEADER
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
ImageRvaToSection proto stdcall NtHeaders:dword, Base:dword, Rva:dword

;*************************************************************************
; Method:           ImageRvaToVa
; Description:    	
; ParameterList:  	NtHeaders, Base, Rva, LastRvaSection
; Parameter:        NtHeaders:__in PIMAGE_NT_HEADERS
; Parameter:        Base:__in PVOID
; Parameter:        Rva:__in ULONG
; Parameter:        LastRvaSection:__in_opt OUT PIMAGE_SECTION_HEADER *
; Return Value:     PVOID
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
ImageRvaToVa proto stdcall \
	NtHeaders:dword, \
	Base:dword, \
	Rva:dword, \
	LastRvaSection:dword

;*************************************************************************
; Method:           MapDebugInformation
; Description:    	
; ParameterList:  	FileHandle, FileName, SymbolPath, ImageBase
; Parameter:        FileHandle:__in_opt HANDLE 
; Parameter:        FileName:__in PCSTR
; Parameter:        SymbolPath:__in_opt PCSTR
; Parameter:        ImageBase:__in ULONG
; Return Value:     PIMAGE_DEBUG_INFORMATION
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
MapDebugInformation proto stdcall \
	FileHandle:dword, \
	FileName:dword, \
	SymbolPath:dword, \
	ImageBase:dword

;*************************************************************************
; Method:           UnmapDebugInformation
; Description:    	
; ParameterList:  	DebugInfo
; Parameter:        DebugInfo:__out_xcount(unknown) PIMAGE_DEBUG_INFORMATION
; Return Value:     BOOL
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
UnmapDebugInformation proto stdcall DebugInfo:dword

;*************************************************************************
; Method:           SearchTreeForFile
; Description:    	
; ParameterList:  	RootPath, InputPathName, OutputPathBuffer
; Parameter:        RootPath:__in PCSTR
; Parameter:        InputPathName:__in PCSTR
; Parameter:        OutputPathBuffer:__out_ecount(MAX_PATH + 1) PSTR
; Return Value:     BOOL
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
SearchTreeForFile proto stdcall RootPath:dword, InputPathName:dword, OutputPathBuffer:dword

;*************************************************************************
; Method:           SearchTreeForFileW
; Description:    	
; ParameterList:  	RootPath, InputPathName, OutputPathBuffer
; Parameter:        RootPath:__in PCWSTR
; Parameter:        InputPathName:__in PCWSTR
; Parameter:        OutputPathBuffer:__out_ecount(MAX_PATH + 1) PWSTR
; Return Value:     BOOL
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
SearchTreeForFileW proto stdcall RootPath:dword, InputPathName:dword, OutputPathBuffer:dword

;typedef BOOL
;(CALLBACK *PENUMDIRTREE_CALLBACK)(
;    __in PCSTR FilePath,
;    __in_opt PVOID CallerData
;    );

;*************************************************************************
; Method:           EnumDirTree
; Description:    	
; ParameterList:  	hProcess, RootPath, InputPathName, OutputPathBuffer, cb, data
; Parameter:        hProcess:__in_opt HANDLE
; Parameter:        RootPath:__in PCSTR
; Parameter:        InputPathName:__in PCSTR
; Parameter:        OutputPathBuffer:__out_ecount(MAX_PATH + 1) PSTR
; Parameter:        cb:__in_opt PENUMDIRTREE_CALLBACK
; Parameter:        data:__in_opt PVOID
; Return Value:     BOOL
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
EnumDirTree proto stdcall \
	hProcess:dword, \
	RootPath:dword, \
	InputPathName:dword, \
	OutputPathBuffer:dword, \
	cb:dword, \
	data:dword

;typedef BOOL
;(CALLBACK *PENUMDIRTREE_CALLBACKW)(
;    __in PCWSTR FilePath,
;    __in_opt PVOID CallerData
;    );

;*************************************************************************
; Method:           EnumDirTreeW
; Description:    	
; ParameterList:  	hProcess, RootPath, InputPathName, OutputPathBuffer, cb, data
; Parameter:        hProcess:__in_opt HANDLE
; Parameter:        RootPath:__in PCWSTR
; Parameter:        InputPathName:__in PCWSTR
; Parameter:        OutputPathBuffer:__out_ecount(MAX_PATH + 1) PWSTR
; Parameter:        cb:__in_opt PENUMDIRTREE_CALLBACKW
; Parameter:        data:__in_opt PVOID
; Return Value:     BOOL
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
EnumDirTreeW proto stdcall \
	hProcess:dword, \
	RootPath:dword, \
	InputPathName:dword, \
	OutputPathBuffer:dword, \
	cb:dword, \
	data:dword

;*************************************************************************
; Method:           MakeSureDirectoryPathExists
; Description:    	
; ParameterList:  	DirPath
; Parameter:        DirPath:__in PCSTR
; Return Value:     BOOL
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
MakeSureDirectoryPathExists proto stdcall hProcess:dword

;*************************************************************************
; Method:           UnDecorateSymbolName
; Description:    	
; ParameterList:  	name1, outputString, maxStringLength, flags
; Parameter:        name1:__in PCSTR
; Parameter:        outputString:__out_ecount(maxStringLength) PSTR
; Parameter:        maxStringLength:__in DWORD
; Parameter:        flags:__in DWORD
; Return Value:     DWORD
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
UnDecorateSymbolName proto stdcall \
	name1:dword, \
	outputString:dword, \
	maxStringLength:dword, \
	flags:dword

;DWORD
;IMAGEAPI
;WINAPI
;UnDecorateSymbolNameW(
;    __in PCWSTR name,
;    __out_ecount(maxStringLength) PWSTR outputString,
;    __in DWORD maxStringLength,
;    __in DWORD flags
;    );

;
; StackWalking API

;typedef
;BOOL
;(__stdcall *PREAD_PROCESS_MEMORY_ROUTINE64)(
;    __in HANDLE hProcess,
;    __in DWORD64 qwBaseAddress,
;    __out_bcount(nSize) PVOID lpBuffer,
;    __in DWORD nSize,
;    __out LPDWORD lpNumberOfBytesRead
;    );

;typedef
;PVOID
;(__stdcall *PFUNCTION_TABLE_ACCESS_ROUTINE64)(
;    __in HANDLE ahProcess,
;    __in DWORD64 AddrBase
;    );

;typedef
;DWORD64
;(__stdcall *PGET_MODULE_BASE_ROUTINE64)(
;    __in HANDLE hProcess,
;    __in DWORD64 Address
;    );

;typedef
;DWORD64
;(__stdcall *PTRANSLATE_ADDRESS_ROUTINE64)(
;    __in HANDLE hProcess,
;    __in HANDLE hThread,
;    __in LPADDRESS64 lpaddr
;    );

;BOOL
;IMAGEAPI
;StackWalk64(
;    __in DWORD MachineType,
;    __in HANDLE hProcess,
;    __in HANDLE hThread,
;    __inout LPSTACKFRAME64 StackFrame,
;    __inout PVOID ContextRecord,
;    __in_opt PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine,
;    __in_opt PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine,
;    __in_opt PGET_MODULE_BASE_ROUTINE64 GetModuleBaseRoutine,
;    __in_opt PTRANSLATE_ADDRESS_ROUTINE64 TranslateAddress
;    );

;typedef
;BOOL
;(__stdcall *PREAD_PROCESS_MEMORY_ROUTINE)(
;    __in HANDLE hProcess,
;    __in DWORD lpBaseAddress,
;    __out_bcount(nSize) PVOID lpBuffer,
;    __in DWORD nSize,
;    __out PDWORD lpNumberOfBytesRead
;    );

;typedef
;PVOID
;(__stdcall *PFUNCTION_TABLE_ACCESS_ROUTINE)(
;    __in HANDLE hProcess,
;    __in DWORD AddrBase
;    );

;typedef
;DWORD
;(__stdcall *PGET_MODULE_BASE_ROUTINE)(
;    __in HANDLE hProcess,
;    __in DWORD Address
;    );

;typedef
;DWORD
;(__stdcall *PTRANSLATE_ADDRESS_ROUTINE)(
;    __in HANDLE hProcess,
;    __in HANDLE hThread,
;    __out LPADDRESS lpaddr
;    );

;BOOL
;IMAGEAPI
;StackWalk(
;    DWORD MachineType,
;    __in HANDLE hProcess,
;    __in HANDLE hThread,
;    __inout LPSTACKFRAME StackFrame,
;    __inout PVOID ContextRecord,
;    __in_opt PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,
;    __in_opt PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
;    __in_opt PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine,
;    __in_opt PTRANSLATE_ADDRESS_ROUTINE TranslateAddress
;    );



;LPAPI_VERSION
;IMAGEAPI
;ImagehlpApiVersion(
;    VOID
;    );
;
;LPAPI_VERSION
;IMAGEAPI
;ImagehlpApiVersionEx(
;    __in LPAPI_VERSION AppVersion
;    );
;
;DWORD
;IMAGEAPI
;GetTimestampForLoadedLibrary(
;    __in HMODULE Module
;    );

;typedef BOOL
;(CALLBACK *PSYM_ENUMMODULES_CALLBACK64)(
;    __in PCSTR ModuleName,
;    __in DWORD64 BaseOfDll,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PSYM_ENUMMODULES_CALLBACKW64)(
;    __in PCWSTR ModuleName,
;    __in DWORD64 BaseOfDll,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PENUMLOADED_MODULES_CALLBACK64)(
;    __in PCSTR ModuleName,
;    __in DWORD64 ModuleBase,
;    __in ULONG ModuleSize,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PENUMLOADED_MODULES_CALLBACKW64)(
;    __in PCWSTR ModuleName,
;    __in DWORD64 ModuleBase,
;    __in ULONG ModuleSize,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64)(
;    __in PCSTR SymbolName,
;    __in DWORD64 SymbolAddress,
;    __in ULONG SymbolSize,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK64W)(
;    __in PCWSTR SymbolName,
;    __in DWORD64 SymbolAddress,
;    __in ULONG SymbolSize,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PSYMBOL_REGISTERED_CALLBACK64)(
;    __in HANDLE hProcess,
;    __in ULONG ActionCode,
;    __in_opt ULONG64 CallbackData,
;    __in_opt ULONG64 UserContext
;    );
;
;typedef
;PVOID
;(CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK)(
;    __in HANDLE hProcess,
;    __in DWORD AddrBase,
;    __in_opt PVOID UserContext
;    );
;
;typedef
;PVOID
;(CALLBACK *PSYMBOL_FUNCENTRY_CALLBACK64)(
;    __in HANDLE hProcess,
;    __in ULONG64 AddrBase,
;    __in ULONG64 UserContext
;    );

;typedef BOOL
;(CALLBACK *PSYM_ENUMMODULES_CALLBACK)(
;    __in PCSTR ModuleName,
;    __in ULONG BaseOfDll,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACK)(
;    __in PCSTR SymbolName,
;    __in ULONG SymbolAddress,
;    __in ULONG SymbolSize,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PSYM_ENUMSYMBOLS_CALLBACKW)(
;    __in PCWSTR SymbolName,
;    __in ULONG SymbolAddress,
;    __in ULONG SymbolSize,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PENUMLOADED_MODULES_CALLBACK)(
;    __in PCSTR ModuleName,
;    __in ULONG ModuleBase,
;    __in ULONG ModuleSize,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PSYMBOL_REGISTERED_CALLBACK)(
;    __in HANDLE hProcess,
;    __in ULONG ActionCode,
;    __in_opt PVOID CallbackData,
;    __in_opt PVOID UserContext
;    );

;; If dbghelp ever needs to display graphical UI, it will use this as the parent window.
;
;BOOL
;IMAGEAPI
;SymSetParentWindow(
;    __in HWND hwnd
;    );
;
;PCHAR
;IMAGEAPI
;SymSetHomeDirectory(
;    __in_opt HANDLE hProcess,
;    __in_opt PCSTR dir
;    );
;
;PWSTR
;IMAGEAPI
;SymSetHomeDirectoryW(
;    __in_opt HANDLE hProcess,
;    __in_opt PCWSTR dir
;    );
;
;PCHAR
;IMAGEAPI
;SymGetHomeDirectory(
;    __in DWORD type,
;    __out_ecount(size) PSTR dir,
;    __in size_t size
;    );
;
;PWSTR
;IMAGEAPI
;SymGetHomeDirectoryW(
;    __in DWORD type,
;    __out_ecount(size) PWSTR dir,
;    __in size_t size
;    );

;BOOL
;IMAGEAPI
;SymGetOmaps(
;    __in HANDLE hProcess,
;    __in DWORD64 BaseOfDll,
;    __out POMAP *OmapTo,
;    __out PDWORD64 cOmapTo,
;    __out POMAP *OmapFrom,
;    __out PDWORD64 cOmapFrom
;    );

;DWORD
;IMAGEAPI
;SymSetOptions(
;    __in DWORD   SymOptions
;    );
;
;DWORD
;IMAGEAPI
;SymGetOptions(
;    VOID
;    );
;
;BOOL
;IMAGEAPI
;SymCleanup(
;    __in HANDLE hProcess
;    );
;
;BOOL
;IMAGEAPI
;SymMatchString(
;    __in PCSTR string,
;    __in PCSTR expression,
;    __in BOOL fCase
;    );
;
;BOOL
;IMAGEAPI
;SymMatchStringA(
;    __in PCSTR string,
;    __in PCSTR expression,
;    __in BOOL fCase
;    );
;
;BOOL
;IMAGEAPI
;SymMatchStringW(
;    __in PCWSTR string,
;    __in PCWSTR expression,
;    __in BOOL fCase
;    );
;
;typedef BOOL
;(CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACK)(
;    __in PSOURCEFILE pSourceFile,
;    __in_opt PVOID UserContext
;    );
;
;; for backwards compatibility - don't use this
;#define PSYM_ENUMSOURCFILES_CALLBACK PSYM_ENUMSOURCEFILES_CALLBACK
;
;BOOL
;IMAGEAPI
;SymEnumSourceFiles(
;    __in HANDLE hProcess,
;    __in ULONG64 ModBase,
;    __in_opt PCSTR Mask,
;    __in PSYM_ENUMSOURCEFILES_CALLBACK cbSrcFiles,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PSYM_ENUMSOURCEFILES_CALLBACKW)(
;    __in PSOURCEFILEW pSourceFile,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumSourceFilesW(
;    __in HANDLE hProcess,
;    __in ULONG64 ModBase,
;    __in_opt PCWSTR Mask,
;    __in PSYM_ENUMSOURCEFILES_CALLBACKW cbSrcFiles,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumerateModules64(
;    __in HANDLE hProcess,
;    __in PSYM_ENUMMODULES_CALLBACK64 EnumModulesCallback,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumerateModulesW64(
;    __in HANDLE hProcess,
;    __in PSYM_ENUMMODULES_CALLBACKW64 EnumModulesCallback,
;    __in_opt PVOID UserContext
;    );

;BOOL
;IMAGEAPI
;SymEnumerateModules(
;    __in HANDLE hProcess,
;    __in PSYM_ENUMMODULES_CALLBACK EnumModulesCallback,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;EnumerateLoadedModulesEx(
;    __in HANDLE hProcess,
;    __in PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback,
;    __in_opt PVOID UserContext
;    );
;    
;BOOL
;IMAGEAPI
;EnumerateLoadedModulesExW(
;    __in HANDLE hProcess,
;    __in PENUMLOADED_MODULES_CALLBACKW64 EnumLoadedModulesCallback,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;EnumerateLoadedModules64(
;    __in HANDLE hProcess,
;    __in PENUMLOADED_MODULES_CALLBACK64 EnumLoadedModulesCallback,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;EnumerateLoadedModulesW64(
;    __in HANDLE hProcess,
;    __in PENUMLOADED_MODULES_CALLBACKW64 EnumLoadedModulesCallback,
;    __in_opt PVOID UserContext
;    );

;BOOL
;IMAGEAPI
;EnumerateLoadedModules(
;    __in HANDLE hProcess,
;    __in PENUMLOADED_MODULES_CALLBACK EnumLoadedModulesCallback,
;    __in_opt PVOID UserContext
;    );

;PVOID
;IMAGEAPI
;SymFunctionTableAccess64(
;    __in HANDLE hProcess,
;    __in DWORD64 AddrBase
;    );

;PVOID
;IMAGEAPI
;SymFunctionTableAccess(
;    __in HANDLE hProcess,
;    __in DWORD AddrBase
;    );
;
;BOOL
;IMAGEAPI
;SymGetUnwindInfo(
;    __in HANDLE hProcess,
;    __in DWORD64 Address,
;    __out_bcount_opt( * Size) PVOID Buffer,
;    __inout PULONG Size
;    );

;BOOL
;IMAGEAPI
;SymGetModuleInfo64(
;    __in HANDLE hProcess,
;    __in DWORD64 qwAddr,
;    __out PIMAGEHLP_MODULE64 ModuleInfo
;    );
;
;BOOL
;IMAGEAPI
;SymGetModuleInfoW64(
;    __in HANDLE hProcess,
;    __in DWORD64 qwAddr,
;    __out PIMAGEHLP_MODULEW64 ModuleInfo
;    );

;BOOL
;IMAGEAPI
;SymGetModuleInfo(
;    __in HANDLE hProcess,
;    __in DWORD dwAddr,
;    __out PIMAGEHLP_MODULE ModuleInfo
;    );

;BOOL
;IMAGEAPI
;SymGetModuleInfoW(
;    __in HANDLE hProcess,
;    __in DWORD dwAddr,
;    __out PIMAGEHLP_MODULEW ModuleInfo
;    );
;
;DWORD64
;IMAGEAPI
;SymGetModuleBase64(
;    __in HANDLE hProcess,
;    __in DWORD64 qwAddr
;    );

;DWORD
;IMAGEAPI
;SymGetModuleBase(
;    __in HANDLE hProcess,
;    __in DWORD dwAddr
;    );

;typedef BOOL
;(CALLBACK *PSYM_ENUMLINES_CALLBACK)(
;    __in PSRCCODEINFO LineInfo,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumLines(
;    __in HANDLE hProcess,
;    __in ULONG64 Base,
;    __in_opt PCSTR Obj,
;    __in_opt PCSTR File,
;    __in PSYM_ENUMLINES_CALLBACK EnumLinesCallback,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PSYM_ENUMLINES_CALLBACKW)(
;    __in PSRCCODEINFOW LineInfo,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumLinesW(
;    __in HANDLE hProcess,
;    __in ULONG64 Base,
;    __in_opt PCWSTR Obj,
;    __in_opt PCWSTR File,
;    __in PSYM_ENUMLINES_CALLBACKW EnumLinesCallback,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymGetLineFromAddr64(
;    __in HANDLE hProcess,
;    __in DWORD64 qwAddr,
;    __out PDWORD pdwDisplacement,
;    __out PIMAGEHLP_LINE64 Line64
;    );
;
;BOOL
;IMAGEAPI
;SymGetLineFromAddrW64(
;    __in HANDLE hProcess,
;    __in DWORD64 dwAddr,
;    __out PDWORD pdwDisplacement,
;    __out PIMAGEHLP_LINEW64 Line
;    );
;
;BOOL
;IMAGEAPI
;SymEnumSourceLines(
;    __in HANDLE hProcess,
;    __in ULONG64 Base,
;    __in_opt PCSTR Obj,
;    __in_opt PCSTR File,
;    __in_opt DWORD Line,
;    __in DWORD Flags,
;    __in PSYM_ENUMLINES_CALLBACK EnumLinesCallback,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumSourceLinesW(
;    __in HANDLE hProcess,
;    __in ULONG64 Base,
;    __in_opt PCWSTR Obj,
;    __in_opt PCWSTR File,
;    __in_opt DWORD Line,
;    __in DWORD Flags,
;    __in PSYM_ENUMLINES_CALLBACKW EnumLinesCallback,
;    __in_opt PVOID UserContext
;    );
;
;; flags for SymEnumSourceLines

;BOOL
;IMAGEAPI
;SymGetLineFromAddr(
;    __in HANDLE hProcess,
;    __in DWORD dwAddr,
;    __out PDWORD pdwDisplacement,
;    __out PIMAGEHLP_LINE Line
;    );
;
;BOOL
;IMAGEAPI
;SymGetLineFromAddrW(
;    __in HANDLE hProcess,
;    __in DWORD dwAddr,
;    __out PDWORD pdwDisplacement,
;    __out PIMAGEHLP_LINEW Line
;    );
;
;BOOL
;IMAGEAPI
;SymGetLineFromName64(
;    __in HANDLE hProcess,
;    __in_opt PCSTR ModuleName,
;    __in_opt PCSTR FileName,
;    __in DWORD dwLineNumber,
;    __out PLONG plDisplacement,
;    __inout PIMAGEHLP_LINE64 Line
;    );
;
;BOOL
;IMAGEAPI
;SymGetLineFromNameW64(
;    __in HANDLE hProcess,
;    __in_opt PCWSTR ModuleName,
;    __in_opt PCWSTR FileName,
;    __in DWORD dwLineNumber,
;    __out PLONG plDisplacement,
;    __inout PIMAGEHLP_LINEW64 Line
;    );

;BOOL
;IMAGEAPI
;SymGetLineFromName(
;    __in HANDLE hProcess,
;    __in_opt PCSTR ModuleName,
;    __in_opt PCSTR FileName,
;    __in DWORD dwLineNumber,
;    __out PLONG plDisplacement,
;    __inout PIMAGEHLP_LINE Line
;    );
;
;BOOL
;IMAGEAPI
;SymGetLineNext64(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_LINE64 Line
;    );
;
;BOOL
;IMAGEAPI
;SymGetLineNextW64(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_LINEW64 Line
;    );

;BOOL
;IMAGEAPI
;SymGetLineNext(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_LINE Line
;    );
;
;BOOL
;IMAGEAPI
;SymGetLineNextW(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_LINEW Line
;    );
;
;BOOL
;IMAGEAPI
;SymGetLinePrev64(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_LINE64 Line
;    );
;
;BOOL
;IMAGEAPI
;SymGetLinePrevW64(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_LINEW64 Line
;    );

;BOOL
;IMAGEAPI
;SymGetLinePrev(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_LINE Line
;    );
;
;BOOL
;IMAGEAPI
;SymGetLinePrevW(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_LINEW Line
;    );
;
;ULONG
;IMAGEAPI
;SymGetFileLineOffsets64(
;    __in HANDLE hProcess,
;    __in_opt PCSTR ModuleName,
;    __in PCSTR FileName,
;    __out_ecount(BufferLines) PDWORD64 Buffer,
;    __in ULONG BufferLines
;    );
;
;BOOL
;IMAGEAPI
;SymMatchFileName(
;    __in PCSTR FileName,
;    __in PCSTR Match,
;    __deref_opt_out PSTR *FileNameStop,
;    __deref_opt_out PSTR *MatchStop
;    );
;
;BOOL
;IMAGEAPI
;SymMatchFileNameW(
;    __in PCWSTR FileName,
;    __in PCWSTR Match,
;    __deref_opt_out PWSTR *FileNameStop,
;    __deref_opt_out PWSTR *MatchStop
;    );
;
;BOOL
;IMAGEAPI
;SymGetSourceFile(
;    __in HANDLE hProcess,
;    __in ULONG64 Base,
;    __in_opt PCSTR Params,
;    __in PCSTR FileSpec,
;    __out_ecount(Size) PSTR FilePath,
;    __in DWORD Size
;    );
;
;BOOL
;IMAGEAPI
;SymGetSourceFileW(
;    __in HANDLE hProcess,
;    __in ULONG64 Base,
;    __in_opt PCWSTR Params,
;    __in PCWSTR FileSpec,
;    __out_ecount(Size) PWSTR FilePath,
;    __in DWORD Size
;    );
;
;BOOL
;IMAGEAPI
;SymGetSourceFileToken(
;    __in HANDLE hProcess,
;    __in ULONG64 Base,
;    __in PCSTR FileSpec,
;    __deref_out PVOID *Token,
;    __out DWORD *Size
;    );
;
;BOOL
;IMAGEAPI
;SymGetSourceFileTokenW(
;    __in HANDLE hProcess,
;    __in ULONG64 Base,
;    __in PCWSTR FileSpec,
;    __deref_out PVOID *Token,
;    __out DWORD *Size
;    );
;
;BOOL
;IMAGEAPI
;SymGetSourceFileFromToken(
;    __in HANDLE hProcess,
;    __in PVOID Token,
;    __in_opt PCSTR Params,
;    __out_ecount(Size) PSTR FilePath,
;    __in DWORD Size
;    );
;
;BOOL
;IMAGEAPI
;SymGetSourceFileFromTokenW(
;    __in HANDLE hProcess,
;    __in PVOID Token,
;    __in_opt PCWSTR Params,
;    __out_ecount(Size) PWSTR FilePath,
;    __in DWORD Size
;    );
;
;BOOL
;IMAGEAPI
;SymGetSourceVarFromToken(
;    __in HANDLE hProcess,
;    __in PVOID Token,
;    __in_opt PCSTR Params,
;    __in PCSTR VarName,
;    __out_ecount(Size) PSTR Value,
;    __in DWORD Size
;    );
;
;BOOL
;IMAGEAPI
;SymGetSourceVarFromTokenW(
;    __in HANDLE hProcess,
;    __in PVOID Token,
;    __in_opt PCWSTR Params,
;    __in PCWSTR VarName,
;    __out_ecount(Size) PWSTR Value,
;    __in DWORD Size
;    );
;
;typedef BOOL (CALLBACK *PENUMSOURCEFILETOKENSCALLBACK)(__in PVOID token,  __in size_t size);
;
;BOOL
;IMAGEAPI
;SymEnumSourceFileTokens(
;    __in HANDLE hProcess,
;    __in ULONG64 Base,
;    __in PENUMSOURCEFILETOKENSCALLBACK Callback
;    );
;
;BOOL
;IMAGEAPI
;SymInitialize(
;    __in HANDLE hProcess,
;    __in_opt PCSTR UserSearchPath,
;    __in BOOL fInvadeProcess
;    );
;
;BOOL
;IMAGEAPI
;SymInitializeW(
;    __in HANDLE hProcess,
;    __in_opt PCWSTR UserSearchPath,
;    __in BOOL fInvadeProcess
;    );
;
;BOOL
;IMAGEAPI
;SymGetSearchPath(
;    __in HANDLE hProcess,
;    __out_ecount(SearchPathLength) PSTR SearchPath,
;    __in DWORD SearchPathLength
;    );
;
;BOOL
;IMAGEAPI
;SymGetSearchPathW(
;    __in HANDLE hProcess,
;    __out_ecount(SearchPathLength) PWSTR SearchPath,
;    __in DWORD SearchPathLength
;    );
;
;BOOL
;IMAGEAPI
;SymSetSearchPath(
;    __in HANDLE hProcess,
;    __in_opt PCSTR SearchPath
;    );
;
;BOOL
;IMAGEAPI
;SymSetSearchPathW(
;    __in HANDLE hProcess,
;    __in_opt PCWSTR SearchPath
;    );

;DWORD64
;IMAGEAPI
;SymLoadModuleEx(
;    __in HANDLE hProcess,
;    __in_opt HANDLE hFile,
;    __in_opt PCSTR ImageName,
;    __in_opt PCSTR ModuleName,
;    __in DWORD64 BaseOfDll,
;    __in DWORD DllSize,
;    __in_opt PMODLOAD_DATA Data,
;    __in_opt DWORD Flags
;    );
;
;DWORD64
;IMAGEAPI
;SymLoadModuleExW(
;    __in HANDLE hProcess,
;    __in_opt HANDLE hFile,
;    __in_opt PCWSTR ImageName,
;    __in_opt PCWSTR ModuleName,
;    __in DWORD64 BaseOfDll,
;    __in DWORD DllSize,
;    __in_opt PMODLOAD_DATA Data,
;    __in_opt DWORD Flags
;    );
;
;BOOL
;IMAGEAPI
;SymUnloadModule64(
;    __in HANDLE hProcess,
;    __in DWORD64 BaseOfDll
;    );

;BOOL
;IMAGEAPI
;SymUnloadModule(
;    __in HANDLE hProcess,
;    __in DWORD BaseOfDll
;    );
;
;BOOL
;IMAGEAPI
;SymUnDName64(
;    __in PIMAGEHLP_SYMBOL64 sym,            ; Symbol to undecorate
;    __out_ecount(UnDecNameLength) PSTR UnDecName,   ; Buffer to store undecorated name in
;    __in DWORD UnDecNameLength              ; Size of the buffer
;    );

;BOOL
;IMAGEAPI
;SymUnDName(
;    __in PIMAGEHLP_SYMBOL sym,              ; Symbol to undecorate
;    __out_ecount(UnDecNameLength) PSTR UnDecName,   ; Buffer to store undecorated name in
;    __in DWORD UnDecNameLength              ; Size of the buffer
;    );
;
;BOOL
;IMAGEAPI
;SymRegisterCallback64(
;    __in HANDLE hProcess,
;    __in PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction,
;    __in ULONG64 UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymRegisterCallbackW64(
;    __in HANDLE hProcess,
;    __in PSYMBOL_REGISTERED_CALLBACK64 CallbackFunction,
;    __in ULONG64 UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymRegisterFunctionEntryCallback64(
;    __in HANDLE hProcess,
;    __in PSYMBOL_FUNCENTRY_CALLBACK64 CallbackFunction,
;    __in ULONG64 UserContext
;    );

;BOOL
;IMAGEAPI
;SymRegisterCallback(
;    __in HANDLE hProcess,
;    __in PSYMBOL_REGISTERED_CALLBACK CallbackFunction,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymRegisterFunctionEntryCallback(
;    __in HANDLE hProcess,
;    __in PSYMBOL_FUNCENTRY_CALLBACK CallbackFunction,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymSetContext(
;    __in HANDLE hProcess,
;    __in PIMAGEHLP_STACK_FRAME StackFrame,
;    __in_opt PIMAGEHLP_CONTEXT Context
;    );
;
;BOOL
;IMAGEAPI
;SymSetScopeFromAddr(
;    __in HANDLE hProcess,
;    __in ULONG64 Address
;    );
;
;BOOL
;IMAGEAPI
;SymSetScopeFromIndex(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in DWORD Index
;    );
;
;typedef BOOL
;(CALLBACK *PSYM_ENUMPROCESSES_CALLBACK)(
;    __in HANDLE hProcess,
;    __in PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumProcesses(
;    __in PSYM_ENUMPROCESSES_CALLBACK EnumProcessesCallback,
;    __in PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymFromAddr(
;    __in HANDLE hProcess,
;    __in DWORD64 Address,
;    __out_opt PDWORD64 Displacement,
;    __inout PSYMBOL_INFO Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymFromAddrW(
;    __in HANDLE hProcess,
;    __in DWORD64 Address,
;    __out_opt PDWORD64 Displacement,
;    __inout PSYMBOL_INFOW Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymFromToken(
;    __in HANDLE hProcess,
;    __in DWORD64 Base,
;    __in DWORD Token,
;    __inout PSYMBOL_INFO Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymFromTokenW(
;    __in HANDLE hProcess,
;    __in DWORD64 Base,
;    __in DWORD Token,
;    __inout PSYMBOL_INFOW Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymNext(
;    __in HANDLE hProcess,
;    __inout PSYMBOL_INFO si
;    );
;
;BOOL
;IMAGEAPI
;SymNextW(
;    __in HANDLE hProcess,
;    __inout PSYMBOL_INFOW siw
;    );
;
;BOOL
;IMAGEAPI
;SymPrev(
;    __in HANDLE hProcess,
;    __inout PSYMBOL_INFO si
;    );
;
;BOOL
;IMAGEAPI
;SymPrevW(
;    __in HANDLE hProcess,
;    __inout PSYMBOL_INFOW siw
;    );

;BOOL
;IMAGEAPI
;SymFromName(
;    __in HANDLE hProcess,
;    __in PCSTR Name,
;    __inout PSYMBOL_INFO Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymFromNameW(
;    __in HANDLE hProcess,
;    __in PCWSTR Name,
;    __inout PSYMBOL_INFOW Symbol
;    );
;
;typedef BOOL
;(CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACK)(
;    __in PSYMBOL_INFO pSymInfo,
;    __in ULONG SymbolSize,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumSymbols(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in_opt PCSTR Mask,
;    __in PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );
;
;typedef BOOL
;(CALLBACK *PSYM_ENUMERATESYMBOLS_CALLBACKW)(
;    __in PSYMBOL_INFOW pSymInfo,
;    __in ULONG SymbolSize,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumSymbolsW(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in_opt PCWSTR Mask,
;    __in PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumSymbolsForAddr(
;    __in HANDLE hProcess,
;    __in DWORD64 Address,
;    __in PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumSymbolsForAddrW(
;    __in HANDLE hProcess,
;    __in DWORD64 Address,
;    __in PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );

;BOOL
;IMAGEAPI
;SymSearch(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in_opt DWORD Index,
;    __in_opt DWORD SymTag,
;    __in_opt PCSTR Mask,
;    __in_opt DWORD64 Address,
;    __in PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
;    __in_opt PVOID UserContext,
;    __in DWORD Options
;    );
;
;BOOL
;IMAGEAPI
;SymSearchW(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in_opt DWORD Index,
;    __in_opt DWORD SymTag,
;    __in_opt PCWSTR Mask,
;    __in_opt DWORD64 Address,
;    __in PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
;    __in_opt PVOID UserContext,
;    __in DWORD Options
;    );
;
;BOOL
;IMAGEAPI
;SymGetScope(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in DWORD Index,
;    __inout PSYMBOL_INFO Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymGetScopeW(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in DWORD Index,
;    __inout PSYMBOL_INFOW Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymFromIndex(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in DWORD Index,
;    __inout PSYMBOL_INFO Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymFromIndexW(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in DWORD Index,
;    __inout PSYMBOL_INFOW Symbol
;    );

;BOOL
;IMAGEAPI
;SymGetTypeInfo(
;    __in HANDLE hProcess,
;    __in DWORD64 ModBase,
;    __in ULONG TypeId,
;    __in IMAGEHLP_SYMBOL_TYPE_INFO GetType,
;    __out PVOID pInfo
;    );

;BOOL
;IMAGEAPI
;SymGetTypeInfoEx(
;    __in HANDLE hProcess,
;    __in DWORD64 ModBase,
;    __inout PIMAGEHLP_GET_TYPE_INFO_PARAMS Params
;    );
;
;BOOL
;IMAGEAPI
;SymEnumTypes(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumTypesW(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumTypesByName(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in_opt PCSTR mask,
;    __in PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymEnumTypesByNameW(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in_opt PCWSTR mask,
;    __in PSYM_ENUMERATESYMBOLS_CALLBACKW EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );
;
;BOOL
;IMAGEAPI
;SymGetTypeFromName(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in PCSTR Name,
;    __inout PSYMBOL_INFO Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymGetTypeFromNameW(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in PCWSTR Name,
;    __inout PSYMBOL_INFOW Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymAddSymbol(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in PCSTR Name,
;    __in DWORD64 Address,
;    __in DWORD Size,
;    __in DWORD Flags
;    );
;
;BOOL
;IMAGEAPI
;SymAddSymbolW(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in PCWSTR Name,
;    __in DWORD64 Address,
;    __in DWORD Size,
;    __in DWORD Flags
;    );
;
;BOOL
;IMAGEAPI
;SymDeleteSymbol(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in_opt PCSTR Name,
;    __in DWORD64 Address,
;    __in DWORD Flags
;    );
;
;BOOL
;IMAGEAPI
;SymDeleteSymbolW(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in_opt PCWSTR Name,
;    __in DWORD64 Address,
;    __in DWORD Flags
;    );
;
;BOOL
;IMAGEAPI
;SymRefreshModuleList(
;    __in HANDLE hProcess
;    );
;
;BOOL
;IMAGEAPI
;SymAddSourceStream(
;    __in HANDLE hProcess,
;    __in ULONG64 Base,
;    __in_opt PCSTR StreamFile,
;    __in_bcount_opt(Size) PBYTE Buffer,
;    __in size_t Size
;    );
;
;typedef BOOL (WINAPI *SYMADDSOURCESTREAM)(HANDLE, ULONG64, PCSTR, PBYTE, size_t);
;
;BOOL
;IMAGEAPI
;SymAddSourceStreamA(
;    __in HANDLE hProcess,
;    __in ULONG64 Base,
;    __in_opt PCSTR StreamFile,
;    __in_bcount_opt(Size) PBYTE Buffer,
;    __in size_t Size
;    );
;
;typedef BOOL (WINAPI *SYMADDSOURCESTREAMA)(HANDLE, ULONG64, PCSTR, PBYTE, size_t);
;
;BOOL
;IMAGEAPI
;SymAddSourceStreamW(
;    __in HANDLE hProcess,
;    __in ULONG64 Base,
;    __in_opt PCWSTR FileSpec,
;    __in_bcount_opt(Size) PBYTE Buffer,
;    __in size_t Size
;    );
;
;BOOL
;IMAGEAPI
;SymSrvIsStoreW(
;    __in_opt HANDLE hProcess,
;    __in PCWSTR path
;    );
;
;BOOL
;IMAGEAPI
;SymSrvIsStore(
;    __in_opt HANDLE hProcess,
;    __in PCSTR path
;    );
;
;PCSTR
;IMAGEAPI
;SymSrvDeltaName(
;    __in HANDLE hProcess,
;    __in_opt PCSTR SymPath,
;    __in PCSTR Type,
;    __in PCSTR File1,
;    __in PCSTR File2
;    );
;
;PCWSTR
;IMAGEAPI
;SymSrvDeltaNameW(
;    __in HANDLE hProcess,
;    __in_opt PCWSTR SymPath,
;    __in PCWSTR Type,
;    __in PCWSTR File1,
;    __in PCWSTR File2
;    );
;
;PCSTR
;IMAGEAPI
;SymSrvGetSupplement(
;    __in HANDLE hProcess,
;    __in_opt PCSTR SymPath,
;    __in PCSTR Node,
;    __in PCSTR File
;    );
;
;PCWSTR
;IMAGEAPI
;SymSrvGetSupplementW(
;    __in HANDLE hProcess,
;    __in_opt PCWSTR SymPath,
;    __in PCWSTR Node,
;    __in PCWSTR File
;    );
;
;BOOL
;IMAGEAPI
;SymSrvGetFileIndexes(
;    __in PCSTR File,
;    __out GUID *Id,
;    __out PDWORD Val1,
;    __out_opt PDWORD Val2,
;    __in DWORD Flags
;    );
;
;BOOL
;IMAGEAPI
;SymSrvGetFileIndexesW(
;    __in PCWSTR File,
;    __out GUID *Id,
;    __out PDWORD Val1,
;    __out_opt PDWORD Val2,
;    __in DWORD Flags
;    );
;
;BOOL
;IMAGEAPI
;SymSrvGetFileIndexStringW(
;    __in HANDLE hProcess,
;    __in_opt PCWSTR SrvPath,
;    __in PCWSTR File,
;    __out_ecount(Size) PWSTR Index,
;    __in size_t Size,
;    __in DWORD Flags
;    );
;
;BOOL
;IMAGEAPI
;SymSrvGetFileIndexString(
;    __in HANDLE hProcess,
;    __in_opt PCSTR SrvPath,
;    __in PCSTR File,
;    __out_ecount(Size) PSTR Index,
;    __in size_t Size,
;    __in DWORD Flags
;    );

;BOOL
;IMAGEAPI
;SymSrvGetFileIndexInfo(
;    __in PCSTR File,
;    __out PSYMSRV_INDEX_INFO Info,
;    __in DWORD Flags
;    );
;
;BOOL
;IMAGEAPI
;SymSrvGetFileIndexInfoW(
;    __in PCWSTR File,
;    __out PSYMSRV_INDEX_INFOW Info,
;    __in DWORD Flags
;    );
;
;PCSTR
;IMAGEAPI
;SymSrvStoreSupplement(
;    __in HANDLE hProcess,
;    __in_opt PCSTR SrvPath,
;    __in PCSTR Node,
;    __in PCSTR File,
;    __in DWORD Flags
;    );
;
;PCWSTR
;IMAGEAPI
;SymSrvStoreSupplementW(
;    __in HANDLE hProcess,
;    __in_opt PCWSTR SymPath,
;    __in PCWSTR Node,
;    __in PCWSTR File,
;    __in DWORD Flags
;    );
;
;PCSTR
;IMAGEAPI
;SymSrvStoreFile(
;    __in HANDLE hProcess,
;    __in_opt PCSTR SrvPath,
;    __in PCSTR File,
;    __in DWORD Flags
;    );
;
;PCWSTR
;IMAGEAPI
;SymSrvStoreFileW(
;    __in HANDLE hProcess,
;    __in_opt PCWSTR SrvPath,
;    __in PCWSTR File,
;    __in DWORD Flags
;    );
;
;; used by SymGetSymbolFile's "Type" parameter

;BOOL
;IMAGEAPI
;SymGetSymbolFile(
;    __in_opt HANDLE hProcess,
;    __in_opt PCSTR SymPath,
;    __in PCSTR ImageFile,
;    __in DWORD Type,
;    __out_ecount(cSymbolFile) PSTR SymbolFile,
;    __in size_t cSymbolFile,
;    __out_ecount(cDbgFile) PSTR DbgFile,
;    __in size_t cDbgFile
;    );
;
;BOOL
;IMAGEAPI
;SymGetSymbolFileW(
;    __in_opt HANDLE hProcess,
;    __in_opt PCWSTR SymPath,
;    __in PCWSTR ImageFile,
;    __in DWORD Type,
;    __out_ecount(cSymbolFile) PWSTR SymbolFile,
;    __in size_t cSymbolFile,
;    __out_ecount(cDbgFile) PWSTR DbgFile,
;    __in size_t cDbgFile
;    );
;
;;
;; Full user-mode dump creation.
;;
;
;typedef BOOL (WINAPI *PDBGHELP_CREATE_USER_DUMP_CALLBACK)(
;    __in DWORD DataType,
;    __in PVOID* Data,
;    __out LPDWORD DataLength,
;    __in_opt PVOID UserData
;    );
;
;BOOL
;WINAPI
;DbgHelpCreateUserDump(
;    __in_opt LPCSTR FileName,
;    __in PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,
;    __in_opt PVOID UserData
;    );
;
;BOOL
;WINAPI
;DbgHelpCreateUserDumpW(
;    __in_opt LPCWSTR FileName,
;    __in PDBGHELP_CREATE_USER_DUMP_CALLBACK Callback,
;    __in_opt PVOID UserData
;    );
;
;; -----------------------------------------------------------------
;; The following 4 legacy APIs are fully supported, but newer
;; ones are recommended.  SymFromName and SymFromAddr provide
;; much more detailed info on the returned symbol.
;
;BOOL
;IMAGEAPI
;SymGetSymFromAddr64(
;    __in HANDLE hProcess,
;    __in DWORD64 qwAddr,
;    __out_opt PDWORD64 pdwDisplacement,
;    __inout PIMAGEHLP_SYMBOL64  Symbol
;    );
;
;

;BOOL
;IMAGEAPI
;SymGetSymFromAddr(
;    __in HANDLE hProcess,
;    __in DWORD dwAddr,
;    __out_opt PDWORD pdwDisplacement,
;    __inout PIMAGEHLP_SYMBOL Symbol
;    );

;BOOL
;IMAGEAPI
;SymGetSymFromName64(
;    __in HANDLE hProcess,
;    __in PCSTR Name,
;    __inout PIMAGEHLP_SYMBOL64 Symbol
;    );

;BOOL
;IMAGEAPI
;SymGetSymFromName(
;    __in HANDLE hProcess,
;    __in PCSTR Name,
;    __inout PIMAGEHLP_SYMBOL Symbol
;    );

;DBHLP_DEPRECIATED
;BOOL
;IMAGEAPI
;FindFileInPath(
;    __in HANDLE hprocess,
;    __in PCSTR SearchPath,
;    __in PCSTR FileName,
;    __in PVOID id,
;    __in DWORD two,
;    __in DWORD three,
;    __in DWORD flags,
;    __out_ecount(MAX_PATH + 1) PSTR FilePath
;    );
;
;; You should use SymFindFileInPath if you want to maintain
;; future compatibility.
;
;DBHLP_DEPRECIATED
;BOOL
;IMAGEAPI
;FindFileInSearchPath(
;    __in HANDLE hprocess,
;    __in PCSTR SearchPath,
;    __in PCSTR FileName,
;    __in DWORD one,
;    __in DWORD two,
;    __in DWORD three,
;    __out_ecount(MAX_PATH + 1) PSTR FilePath
;    );
;
;DBHLP_DEPRECIATED
;BOOL
;IMAGEAPI
;SymEnumSym(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in PSYM_ENUMERATESYMBOLS_CALLBACK EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );
;
;DBHLP_DEPRECIATED
;BOOL
;IMAGEAPI
;SymEnumerateSymbols64(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in PSYM_ENUMSYMBOLS_CALLBACK64 EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );
;
;DBHLP_DEPRECIATED
;BOOL
;IMAGEAPI
;SymEnumerateSymbolsW64(
;    __in HANDLE hProcess,
;    __in ULONG64 BaseOfDll,
;    __in PSYM_ENUMSYMBOLS_CALLBACK64W EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );

;DBHLP_DEPRECIATED
;BOOL
;IMAGEAPI
;SymEnumerateSymbols(
;    __in HANDLE hProcess,
;    __in ULONG BaseOfDll,
;    __in PSYM_ENUMSYMBOLS_CALLBACK EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );
;
;DBHLP_DEPRECIATED
;BOOL
;IMAGEAPI
;SymEnumerateSymbolsW(
;    __in HANDLE hProcess,
;    __in ULONG BaseOfDll,
;    __in PSYM_ENUMSYMBOLS_CALLBACKW EnumSymbolsCallback,
;    __in_opt PVOID UserContext
;    );
;
;; use SymLoadModuleEx
;
;DWORD64
;IMAGEAPI
;SymLoadModule64(
;    __in HANDLE hProcess,
;    __in_opt HANDLE hFile,
;    __in_opt PCSTR ImageName,
;    __in_opt PCSTR ModuleName,
;    __in DWORD64 BaseOfDll,
;    __in DWORD SizeOfDll
;    );
;

;DWORD
;IMAGEAPI
;SymLoadModule(
;    __in HANDLE hProcess,
;    __in_opt HANDLE hFile,
;    __in_opt PCSTR ImageName,
;    __in_opt PCSTR ModuleName,
;    __in DWORD BaseOfDll,
;    __in DWORD SizeOfDll
;    );
;
;BOOL
;IMAGEAPI
;SymGetSymNext64(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_SYMBOL64 Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymGetSymNextW64(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_SYMBOLW64 Symbol
;    );

;BOOL
;IMAGEAPI
;SymGetSymNext(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_SYMBOL Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymGetSymNextW(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_SYMBOLW Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymGetSymPrev64(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_SYMBOL64 Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymGetSymPrevW64(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_SYMBOLW64 Symbol
;    );

;BOOL
;IMAGEAPI
;SymGetSymPrev(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_SYMBOL Symbol
;    );
;
;BOOL
;IMAGEAPI
;SymGetSymPrevW(
;    __in HANDLE hProcess,
;    __inout PIMAGEHLP_SYMBOLW Symbol
;    );
;

;typedef
;BOOL
;(WINAPI * MINIDUMP_CALLBACK_ROUTINE) (
;    __inout PVOID CallbackParam,
;    __in    PMINIDUMP_CALLBACK_INPUT CallbackInput,
;    __inout PMINIDUMP_CALLBACK_OUTPUT CallbackOutput
;    );
;

;*************************************************************************
; Method:           MiniDumpWriteDump
; Description:    	
; ParameterList:  	hProcess, ProcessId, hFile, DumpType, ExceptionParam, UserStreamParam, CallbackParam
; Parameter:        hProcess:__in HANDLE
; Parameter:        ProcessId:__in DWORD
; Parameter:        hFile:__in HANDLE
; Parameter:        DumpType:__in MINIDUMP_TYPE
; Parameter:        ExceptionParam:__in PMINIDUMP_EXCEPTION_INFORMATION
; Parameter:        UserStreamParam:__in PMINIDUMP_USER_STREAM_INFORMATION
; Parameter:        CallbackParam:__in PMINIDUMP_CALLBACK_INFORMATION
; Return Value:     BOOL
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
MiniDumpWriteDump proto stdcall \
	hProcess:dword, \
	ProcessId:dword, \
	hFile:dword, \
	DumpType:dword, \
	ExceptionParam:dword, \
	UserStreamParam:dword, \
	CallbackParam:dword

;*************************************************************************
; Method:           MiniDumpReadDumpStream
; Description:    	
; ParameterList:  	BaseOfDump, StreamNumber, Dir, StreamPointer, StreamSize
; Parameter:        BaseOfDump:__in PVOID
; Parameter:        StreamNumber:__in ULONG
; Parameter:        Dir:__deref_out_opt PMINIDUMP_DIRECTORY *
; Parameter:        StreamPointer:__deref_out_opt PVOID *
; Parameter:        StreamSize:__out_opt ULONG *
; Return Value:     BOOL
; Date:             2014:11:04 00:29:23
; CopyRight:     	Copyright (C) 2014
;************************************************************************/
MiniDumpReadDumpStream proto stdcall \
	BaseOfDump:dword, \
	StreamNumber:dword, \
	Dir:dword, \
	StreamPointer:dword, \
	StreamSize:dword
